The streaming or downloading of digital files has become a dominant mechanism for delivering content to a wide range of devices. Increasing consumer demand for higher and higher quality content poses significant technical challenges for existing infrastructure. Adaptive bit rate streaming of video on demand (VOD) content is an attempt to balance a number of competing priorities to deliver the highest quality user experience within available bandwidth.
To support adaptive bit rate streaming, media content (e.g., movies, television shows, videos, music, and electronic books) is pre-encoded and maintained as multiple sets of files, where each set of files corresponds to a different bit rate, or quality. A client device determines its bandwidth and hardware resources (e.g., available central processing unit (CPU) capacity) in real-time and adjusts the quality of the media content that is requested and played back on the user's device to account for changes in the bandwidth and hardware resources. Fragments at different quality levels, or bitrates, of the media content detailed in a manifest file are requested individually and stored in a buffer for playback.